<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <script>

        // js 弱类型的语言

        // 缺陷
        //   可以不写分号
        //   变量不声明也可以直接使用 
        //   预编译
        //   变量名可以重复  
        //   只读属性  进行了赋值也不会报错


        // 严格模式  --- 为了解决一部分js的语法缺陷
        //    变量必须先声明后使用
        //    只读属性 不能设置新的值
        //    严格模式也存在作用域


        // var str = 'hello' ;
        // str.length = 10 ;   // 没有作用，但是也报错
        // str[1] = 'w' ;   // 没有作用  也不报错
        // console.log(str);


       

        // 'use strict' ;

        // console.log(a);

        // var a = 3 ;

        // var a = 5 ;

        // console.log(a);

        // var str = 'hello' ;
        // // str.length = 10 ;    // 报错了


        // // b = 10 ;   // b必须声明

        // fn() ;

        // function fn() {
        //     // c = 4 ;   // 报错
        // }




        a = 3 ;
        console.log(a);

        fn() ;

        function fn() {
            // 在函数内部声明严格模式，只对函数有效
            'use strict' ;
            c = 4 ;
        }


    </script>
    
</body>
</html>